package com.liusand.user.mapper;

import com.liusand.entity.pojo.User;
import com.liusand.entity.vo.ListUserVo;
import com.liusand.entity.vo.UserVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * @author :liusha
 * packageName :com.liusand.user.mapper
 * fileName :UserMapper
 * creationTime :2022/12/10 21:24
 */
@Mapper
public interface UserMapper {

    User selectUserByPhone(@Param("phone") String phone);

    boolean insertUser(@Param("user") User user);

    int updateUser(@Param("user") User user);

    List<ListUserVo> selectLikeListByUserId(@Param("type") Integer type,
                                            @Param("userId") String userId,
                                            @Param("name") String name,
                                            @Param("findId") String findId,
                                            @Param("page") Integer page,
                                            @Param("pageSize") Integer pageSize);

    Long selectCountListByUserId(@Param("type") Integer type,
                                 @Param("userId") String userId,
                                 @Param("name") String name,
                                 @Param("findId") String findId);

    Long insertRelation(@Param("type") Integer type,
                        @Param("id") String id,
                        @Param("userId") String userId,
                        @Param("toId") String toId);

    Long deleteRelation(@Param("type") Integer type,
                        @Param("userId") String userId,
                        @Param("toId") String toId);

    List<String> selectDisableId(@Param("userId") String userId, @Param("toId") String toId);

    String selectFollowIdByTwoId(@Param("userId") String userId, @Param("toId") String toId);

    String selectDisableIdByTwoId(@Param("userId") String userId, @Param("toId") String toId);

    String selectVisitedIdIdByTwoId(@Param("userId") String userId, @Param("toId") String toId);

    Long updateVisitedTime(@Param("userId") String userId, @Param("toId") String toId);

    List<UserVo> selectUserVoByIds(@Param("ids") List<String> ids);

    User selectUserById(@Param("id") String id);

    List<UserVo> selectVisitedUserVoByIds(@Param("id") String id,
                                          @Param("page") Integer page,
                                          @Param("pageSize") Integer pageSize);

    int updatePhoneById(@Param("id") String id, @Param("newPhone") String newPhone);

    List<User> selectUserByIds(@Param("userIds") List<String> userIds);
}
